package com.wk.springboot.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;

import java.sql.Date;
import java.sql.Timestamp;

/**
 * CREATE TABLE local_message (
 *   id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
 *   biz_type VARCHAR(50) NOT NULL COMMENT '业务类型（测点变更/用户变更等）',
 *   biz_key VARCHAR(50) NOT NULL COMMENT '业务唯一标识',
 *   content TEXT NOT NULL COMMENT '消息内容',
 *   status TINYINT NOT NULL DEFAULT 0 COMMENT '状态（0-待发送 1-已发送 2-发送失败）',
 *   retry_count INT NOT NULL DEFAULT 0 COMMENT '重试次数',
 *   next_retry_time DATETIME COMMENT '下次重试时间',
 *   endpoint_type VARCHAR(20) NOT NULL COMMENT '终端类型（KAFKA/HTTP）',
 *   endpoint_config TEXT COMMENT '终端配置（JSON格式）',
 *   create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
 *   update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
 *   INDEX idx_status_retry (status, next_retry_time)
 * );
 *
 * CREATE TABLE message_send_log (
 *   id BIGINT AUTO_INCREMENT PRIMARY KEY,
 *   message_id BIGINT NOT NULL,
 *   send_time DATETIME NOT NULL,
 *   response TEXT,
 *   success TINYINT NOT NULL,
 *   cost_time INT COMMENT '耗时ms',
 *   FOREIGN KEY (message_id) REFERENCES local_message(id)
 * );
 */
@TableName("local_message")
@Data
public class LocalMessage {
    @TableId(type = IdType.AUTO)
    private Long id;
    private String bizType;
    private String bizKey;
    private String content;
    
    @TableField("status")
    private Integer status; // 0-待处理 1-处理中 2-成功 3-失败 4-消费方处理成功 5-消费方处理失败 6-超过最大重试次数
    
    @TableField("exec_type")
    private String execType; // 执行方式 0-异步 1-同步
    
    private Integer retryCount;

    private Integer currentRetryCount;

    private Date nextRetryTime;
    
    @TableField("endpoint_type")
    private String endpointType;
    
    @TableField("endpoint_config")
    private String endpointConfig;
    
    @Version
    private Integer version; // 乐观锁版本
    
    // 其他标准字段和getter/setter
}